上期我們測完了橫行的連線,這次要來偵測直行啦~~直行感覺上會比橫行還要難一些。
以第三層為例,之前是0、1、2,3、4、5,6、7、8,但現在要變成0、3、6,1、4、7,2、5、8,第一個for迴圈不用動,第二個的j一開始預設為等於i,再來每次都要增加j+層數,
ex:層數一樣假設為3,在第0層的時候,i=0 , j就會等於0,0+3=3,3+3=6。
這樣就可以達到我們要的效果了,結果如下:
弄完了直行跟橫行,兩條斜線就比較簡單啦~這邊依樣以層數為3舉例,仔細觀察會發現左上往右下的斜線是0、4、8,也就是層數+1後去加前一個數字(從0開始)
而右上往左下的斜線是2、4、6,這邊就變成層數-1後去加前一個數字(從層數-1開始)
就是這個樣子:
   private void checkLine() {
   int iButtonCheck = 0; //確定幾顆按鈕被點擊,(當整排按鈕被點擊數=層數時)=連線
   int iline = 0;
   //橫排
   for (int i = 0; i < m_iSize; i++) {
       iButtonCheck = 0;
       for (int j = i * m_iSize; j < m_iSize * (i + 1); j++) {
           if (m_alBingoButtons.get(j).isSelected() == false) {//有任一格false就連線失敗
               break;
           } else if (m_alBingoButtons.get(j).isSelected() == true) {
               iButtonCheck++;
           }
       }
       if (iButtonCheck == m_iSize) {
           iline++;
       }
   }
   //直排
   for (int i = 0; i < m_iSize; i++) {
       iButtonCheck = 0;
       for (int j = i; j < m_iSize * (m_iSize - 1) + i + 1; j = j + m_iSize) {
           if (m_alBingoButtons.get(j).isSelected() == false) {//有任一格false就連線失敗
               break;
           } else if (m_alBingoButtons.get(j).isSelected() == true) {
               iButtonCheck++;
           }
       }
       if (iButtonCheck == m_iSize) {
           iline++;  //加線
       }
   }
   //斜線-左上往右下
   iButtonCheck = 0;
   for (int i = 0; i < m_iSize * m_iSize; i = i + m_iSize + 1) {
       if (m_alBingoButtons.get(i).isSelected() == false) {//有任一格false就連線失敗
           break;
       } else if (m_alBingoButtons.get(i).isSelected() == true) {
           iButtonCheck++;
       }
   }
   if (iButtonCheck == m_iSize) {
       iline++;  //加線
   }
   //斜線-右上往左下
   iButtonCheck = 0;
   for (int i = m_iSize - 1; i <= m_iSize * (m_iSize - 1); i = i + m_iSize - 1) {
       if (m_alBingoButtons.get(i).isSelected() == false) {//有任一格false就連線失敗
           break;
       } else if (m_alBingoButtons.get(i).isSelected() == true) {
           iButtonCheck++;
       }
   }
   if (iButtonCheck == m_iSize) {
       iline++;  //加線
   }
   Log.i("LogTest", "連線數:" + String.valueOf(iline));
}
這樣就可以偵測所有的連線數啦~